// 注：此文件的用途是“为与SPU相关的接口定义TS数据类型”
// 为所有接口的响应数据中都拥有的属性（字段）（也就是“公共属性”）定义TS类型↓
export interface typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    code: number,
    message: string,
    ok: boolean,
}
// 为SPU对象定义TS类型↓
export interface typeOfObjectThatRepresentsAnSpu {
    id?: number,
    spuName: string,
    description: string,
    category3Id: string | number, // 某个SPU所在的三级分类的id
    tmId: number, // 品牌id
    // 注：下面的两个属性的值需要在切换显示另一个div元素时，发送请求，从后台服务器获取↓
    spuSaleAttrList: null | typeOfObjectThatRepresentsAnSaleAttribute[], // 某个SPU的销售属性的集合（即销售属性的所在数组）
    spuImageList: null | typeOfObjectThatStoresInformationAboutTheImageOfAnSpu[], // 某个SPU的图片的集合（即图片所在的数组）（它被用于在这个SPU的照片墙上显示图片）
    // 特别注意：在这行注释下面的属性及其值的类型，是在“swagger”文档中没有提到的，但是现在的接口中却会返回的，因此需要被补充在此处（如果不在此处补充，那么由于“响应数据结构与预期不符”，浏览器执行“console,log(result)”时将输出“undefined”）↓
    createTime: string,
    updateTime: string,
    spuPosterList: null
}
// 为“获取已经被上架（即已有）的SPU”接口响应数据中名为Records的属性定义TS类型↓
export type typeOfPropertyNamedRecordsInTheResponseDataOfTheApiThatGetsSpusThatHaveBeenHad = typeOfObjectThatRepresentsAnSpu[]
// 为“获取已经被上架（即已有）的SPU”接口响应数据定义TS类型↓
export interface typeOfResponseDataOfTheApiThatGetsSpusThatHaveBeenHad extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data: {
        records: typeOfPropertyNamedRecordsInTheResponseDataOfTheApiThatGetsSpusThatHaveBeenHad,
        total: number,
        size: number,
        current: number,
        searchCount: boolean,
        pages: number,
        // 特别注意：在这行注释下面的属性及其值的类型，是在“swagger”文档中没有提到的，但是现在的接口中却会返回的，因此需要被补充在此处（如果不在此处补充，那么由于“响应数据结构与预期不符”，浏览器执行“console,log(result)”时将输出“undefined”）↓
        orders: any[], // 注：这里的any[]是示意性的，实际开发中，应该根据实际情况定义TS类型（但经实测，不知何故，服务器虽然返回了一个数组，但是其中却没有包含任何成员，因此这里暂时用“any[]”示意）
        optimizeCountSql: boolean,
        hitCount: boolean,
        countId: null,
        maxLimit: null,
    }
}
// 为“存储了某个品牌的相关信息”的对象定义TS类型↓
export interface typeOfObjectThatStoresInformationOfATrademark {
    id: number,
    tmName: string,
    logoUrl: string
}
// 为所有的品牌的相关信息定义TS类型↓
export interface TypeOfAllOfTheTrademarkInfomation extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data: typeOfObjectThatStoresInformationOfATrademark[]
}
// 为“存储了某个SPU的图片的相关信息”的对象定义TS类型↓
export interface typeOfObjectThatStoresInformationAboutTheImageOfAnSpu {
    // 注：由于接口返回的原始数据中，表示“图片名称”的属性名是“imgName”，表示“图片网址”的属性名是“imgUrl”，而“ElementPlus”为“el-upload”组件提供的类型“UploadUserFile”中，
    // 要求表示“图片名”的属性名是“name”，表示“图片网址”的属性名是“url”，因此这里需要做一个映射，且为了防止VSCode和TS的类型推断和检查系统标红报错，
    // 这四个属性必须全部是“可选属性”↓
    id?: number,
    imgUrl?: string,
    createTime?: string,
    updateTime?: string,
    spuId?: number,
    imgName?: string,
    name?: string,
    url?: string,
}
// 为“获取某个SPU的图片”接口响应数据定义TS类型↓
export interface typeOfResponseDataOfTheApiThatGetsImagesOfAnSpu extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data: typeOfObjectThatStoresInformationAboutTheImageOfAnSpu[]
}
// 为“存储了某个SPU的销售属性值的相关信息”的对象定义TS类型↓
export interface typeOfObjectThatRepresentsAnSaleAttributeValue {
    id?: number,
    createTime?: null,
    updateTime?: null,
    saleAttrValueName?: string,
    spuId?: number,
    baseSaleAttrId: number | string,
    saleAttrName: string,
    isChecked?: null,
}
// 为成员是“存储了某个SPU的销售属性值的相关信息的对象”的数组定义TS类型↓
export type typeOfAnArrayStoresObjectThatRepresentsAnAttributeValue = typeOfObjectThatRepresentsAnSaleAttributeValue[]
// 为“存储了某个SPU的销售属性的相关信息”的对象定义TS类型↓
export interface typeOfObjectThatRepresentsAnSaleAttribute {
    id?: number,
    createTime?: null,
    updateTime?: null,
    baseSaleAttrId: number | string,
    spuId?: number,
    saleAttrName: string,
    saleAttrValueList: typeOfAnArrayStoresObjectThatRepresentsAnAttributeValue,
    flag?: boolean,
    saleAttrValue?: string,
}
// 为“获取某个SPU的销售属性”的接口的响应数据定义TS类型↓
export interface typeOfResponseDataOfTheApiThatGetsSaleAttributesOfAnSpu extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data: typeOfObjectThatRepresentsAnSaleAttribute[]
}
// 为“获取项目中所有的销售属性”接口的响应数据中的名为Data的属性定义TS类型↓
export interface typeOfPropertyNamedDataInTheResponseDataOfTheApiThatGetAllOfSaleAttributesInThisProject {
    id: number,
    name: string,
}
// 为“获取项目中所有的销售属性”接口的响应数据定义TS类型↓
export interface typeOfResponseDataOfTheApiThatGetAllOfSaleAttributesInThisProject extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data: typeOfPropertyNamedDataInTheResponseDataOfTheApiThatGetAllOfSaleAttributesInThisProject[]
}
// 为“存储了某个平台属性的相关信息”的对象定义TS类型↓
interface typeOfObjectThatRepresentsAPlatformAttribute {
    attrId: number | string,
    valueId: number | string,
}
// 为“存储了某个SKU的销售属性值的相关信息”的对象定义TS类型↓
interface typeOfObjectThatRepresentsASkuSaleAttributeValue {
    saleAttrId: number | string,
    saleAttrValueId: number | string,
}
// 为“存储了某个SKU的相关信息”的对象定义TS类型↓
export interface typeOfObjectThatRepresentsAnSku {
    skuAttrValueList?: typeOfObjectThatRepresentsAPlatformAttribute[],
    skuSaleAttrValueList?: typeOfObjectThatRepresentsASkuSaleAttributeValue[],
    spuId: number | string,
    price: number | string,
    skuName: string,
    skuDesc: string,
    weight: number,
    tmId: number | string,
    category3Id: number | string,
    skuDefaultImg: string,
}
// 为“获取SKU数据”接口响应数据定义TS类型↓
export interface typeOfResponseDataOfTheApiThatGetsSkuData extends typeOfCommonPropertyInTheResponseDataOfAllOfTheApis {
    data: typeOfObjectThatRepresentsAnSku[]
}